package com.hit.client.driver;

import com.hit.client.driver.dto.CarInfoDto;
import com.hit.client.driver.dto.RobotInfoDto;
import com.hit.client.driver.dto.CustomInfo;
import com.hit.client.driver.enums.RobotOtherCommandEnum;

import java.util.List;


public interface RobotDriverService {
    /**
     * 初始化
     *
     * @return
     */
    boolean init();

    /**
     * 设置机器人、换行车运动
     *
     * @param serialNumber 机器人或换行车序列号
     * @param oprType      操作类型 1：机器人 2：换行车
     * @param direction    方向 正向：1 停止：0 反向：-1
     * @return
     */
    boolean setSpeed(String serialNumber, Integer oprType, Integer direction);

    /**
     * 机器人、换行车速度加减
     *
     * @param serialNumber 机器人或换行车序列号
     * @param step         步长 （100 / -100)
     * @return
     */
    boolean setSpeedUpOrDown(String serialNumber, Integer step);


    /**
     * 中断机器人、换行车的操作
     *
     * @param serialNumber 机器人或换行车序列号
     * @param oprType      操作类型 1：机器人 2：换行车
     * @return
     */
    boolean motionAbort(String serialNumber, Integer oprType);

    /**
     * 执行其他命令
     *
     * @param serialNumber
     * @param cmdEnum
     * @param jsonParams
     * @return
     */
    boolean executeOtherCommand(String serialNumber, RobotOtherCommandEnum cmdEnum, String jsonParams);

    /**
     * 获取机器人信息
     *
     * @return
     */
    RobotInfoDto getRobotInfo(String serialNumber);

    /**
     * 获取换行车信息
     * @param serialNumber
     * @return
     */
    CarInfoDto getCarInfo(String serialNumber);


    /**
     * 获取机器人自定义信息
     *
     * @param serialNumber
     * @return
     */
    List<CustomInfo> getRobotCustomInfo(String serialNumber);

    /**
     * 获取换行车自定义信息
     * @param serialNumber
     * @return
     */
    List<CustomInfo> getCarCustomInfo(String serialNumber);

}
